package com.kk.netty.nio.demo;

import java.nio.ByteBuffer;

import static com.kk.netty.nio.ByteBufferUtil.debugAll;

public class TestByteBufferReadWrite {
    public static void main(String[] args) {
        ByteBuffer buffer = ByteBuffer.allocate (10);
        System.out.println ("1、先插入 a ，再插入 b c d");
        // ASCLL码（十进制） 97 = 十六进制 0x61 =  a
        buffer.put ((byte) 0x61);// 写入一个字符 a
        debugAll (buffer);// 调试打印
        buffer.put (new byte[]{0x62, 0x63, 0x64});// 写入字符 b c d
        debugAll (buffer);// 调试打印

        System.out.println (" 2、切换 读模式，取一个字符");
        // 在没有切换为 读 模式的时候，直接拿是拿不到的
        //System.out.println (buffer.get ( ));
        buffer.flip ( );// 切换读模式
        System.out.println (buffer.get ( ));// 取出一个，还剩3个
        System.out.println (buffer.get ( ));// 取出一个，还剩2个
        debugAll (buffer);// 调试打印

        System.out.println ("3、未读取的往前移(压缩),第3、4位会遗留二个63、64是因为没有清零，然后后面插入不影响，会从已有的后面插入");
        buffer.compact ( );
        debugAll (buffer);// 调试打印

        System.out.println ("4、插入两个字符，从已有的后面插入");
        buffer.put (new byte[]{0x65, 0x6f});
        debugAll (buffer);// 调试打印

    }


}
